#include <iostream>
#include <cstring>
#include <vector>

class MyString
{
public:
    MyString()
    {
        _msg = new char[1];
        *_msg = '\0';
    }
    // 构造函数
    MyString(const char* msg)
    {
        if(msg != nullptr)
        {
            _msg = new char[strlen(msg) + 1];
            strcpy(_msg, msg);
        }
        else 
        {
            _msg = new char[1];
            *_msg = '\0';
        }
    }
    // 析构函数
    ~MyString()
    {
        delete []_msg;
        _msg = nullptr;
    }
    // 拷贝构造函数
    MyString(const MyString& src)
    {
        _msg = new char[strlen(src._msg) + 1];
        strcpy(_msg, src._msg);
    }
    // 赋值运算符重载
    MyString& operator=(const MyString& src)
    {
        if(this == &src)
            return *this;
        _msg = new char[strlen(src._msg) + 1];
        strcpy(_msg, src._msg);
        return *this;
    }
private:
    char* _msg;
};


int main(int argc, char const *argv[])
{
    MyString str1 = "hello";
    MyString str2;
    MyString str3(str1);
    MyString str4 = str1;
    str2 = str1;
    return 0;
}
